Personal computers (PC's) typically require a code translation between the keycode which is sent to the keyboard controller by the keyboard and the code which is then sent from the controller to the central processing unit (CPU) of the PC for processing. In addition, the translation required varies, depending upon the particular make and model of PC which is interfaced with the keyboard. Most currently available keyboards produce a hexadecimal encoded data output. The data encoded for use within PC's, however, typically is the same as used for older XT style keyboards, thereby necessitating a code translation between the output of the keyboard and the input of the CPU of the computer.
The most popular personal computers currently are manufactured by the IBM Corporation, and two highly popular types of such IBM personal computers are those which carry the designations "AT" and "PS/2". Even though both of these computers are made by the same manufacturer, the translation of the signals which are supplied from the keyboard to the computer occurs at different operating times; and in addition, at least some of the translations for some of the keys are different. Consequently, a keyboard which is configured to communicate with an AT computer cannot be used with a PS/2 computer and vice-versa.
In the past, keycode translation has been performed in software by using a look-up table or by a separate translation ROM under hardware or software control. The look-up table resides in the control code ROM address space, consequently using space that otherwise could be used for additional code. This effectively reduces the usable size of the control code ROM.
When a dedicated translation ROM is used, available chip real estate is reduced because separate read/write circuitry from the control ROM is required.
Personal computer keyboards communicate with a keyboard controller with a ROM for utilization in the operation of the controller. Typical currently available universal peripheral controllers use some of the keyboard controller ROM for the look-up tables necessary for effective keycode translation. These tables can use approximately twenty-five (25%) percent of the keyboard controller ROM which means that this memory is unavailable for programmers to use for other purposes.
It is desirable to provide a keycode translation system which does not require a portion of the controller ROM space, which is capable of effective keycode translation for different types of personal computers, and which is of small physical size without requiring a separate ROM.